# 导入flask包
from os import name
import re
from sys import path
from flask import Flask,request,jsonify
import json

import requests
from requests.api import put


# 实例化对象
app = Flask(__name__)

# 跨域配置
from flask_cors import CORS
CORS(app)

# 加载配置文件
from config import Config
app.config.from_object(Config)

# 实现orm对象关系映射            建表
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)


# 创建分类表
class Cate(db.Model):
    # 指定表名
    __tablename__="cate"
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    name = db.Column(db.String(50),unique=True)  # 名称唯一
    level = db.Column(db.Integer,default=1) # 等级
    pic = db.Column(db.Integer,default=0)  # 顶级id是0

# 建表
db.create_all()
# 删除表
# db.drop_all()

# 分类的接口(增删改查)
@app.route('/cateM/',methods=['POST','GET','PUT','DELETE'])
def cateM():
    # 添加
    if request.method=='POST':
        # 获取数据
        data = request.data
        # 如果获取出来了转成json模式
        if data:
            data = json.loads(data)
        else:
            data = request.form
        # 添加
        cate = Cate(name=data['name'])
        # 添加  
        db.session.add(cate)
        # 保存
        db.session.commit()
        # 返回结果
        return jsonify({'code': 200})
    # 获取展示
    elif request.method=='GET':
        # 查询所有数据
        # 获取所有数据
        cates = Cate.query.all()
        # 把数据封装成列表
        list=[]
        # 判断有分类
        if cates:
            # 遍历加到列表中
            for i in cates:
                dict = {'id':i.id,'name':i.name}
                list.append(dict)
            # 返回json
            return jsonify({'code': 200,'list':list})
    # 修改
    elif request.method=='PUT':
        # 获取id和名称
        id = request.args.get('id')
        name = request.args.get('name')
        try:
            Cate.query.filter_by(id=id).update({'name':name})
        except Exception as e:
            return jsonify({'code': 403,'msg':'名字重复了'})
        db.session.commit()
        return jsonify({'code': 200})
    # 删除
    elif request.method=='DELETE':
        # 获取你要删除的那条数据的id
        id = request.args.get('id')
        # 根据id获取出来的数据删除
        Cate.query.filter_by(id=id).delete()
        # 保存
        db.session.commit()
        # 返回成功200
        return jsonify({'code': 200})




if __name__ == '__main__':
    app.run(debug=True)
